<?/****************************************************************************************
* Nombre:                                              Modulo: Mensajes al Usuario
* Objetivo: Funciones del Modulo de Mensajes al Usuario
* Precondicion:
* Parametros:
* Responsable:                                         Fecha Ultima Modificacion: 10/23/2002
* Notas:
*  Origen: Es el modulo y otra capa que genera el Mensaje.
*  Nivel: A que tipo de Usuario, se esta generando el mensaje.
*	Los Nivel de Mensaje:
*		1. Todo
*		2. Advertencias y Errores
*		3. Solo Errores
******************************************************************************************/?>
<?
	$aMensajes = array();
	$bMensajesError = false;

	//Setea el controlador de Errores
	set_error_handler ( "errorHandler" );
		
	function errorHandler( $nTipoMensaje, $cMensaje, $cArchivo, $nLinea )  
	{
		addMessage( $cMensaje, $nTipoMensaje, $cArchivo, $nLinea );
	}
	function backTrace()
	{
		$aFunctions = debug_backtrace();
		foreach( $aFunctions as $aFunction )
		{
			$cReturn .= $aFunction['file'] . ':' . $aFunction['line'] . ' ' . $aFunction['function'] . ' ' . $aFunction['class']. "<br/>";
		}
		echo $cReturn ;
	}
	
	function saveMessage() 
	{
		global $aMensajes ;
		if ( isMessage() ) 
		{
			foreach( $aMensajes as $aMensaje )
			{
				$cGuardarMensajes .= implode(  ";" , $aMensaje ) . "|";
			}
			$_SESSION['cError'] = $cGuardarMensajes;
		}
	}

	function retrieveMessage() 
	{
		global $aMensajes ;
		if ( $_SESSION['cError'] != '' ) 
		{
			$aMensajesGuardados = explode (  "|" , $_SESSION['cError'] );
			foreach ( $aMensajesGuardados as $cMensaje )
			{
				if ( $cMensaje ) $aMensajes[] = explode(";", $cMensaje );
			}
		}
	}
	
	function addMessage( $cMensaje , $nTipoMensaje = MENSAJE_ADVERTENCIA, $cArchivo = '', $nLinea = '' ) 
	{	    
		global $aMensajes, $bMensajesError;
		//Si hubo un Error => Pone el flag 
		if  ( $nTipoMensaje == E_ERROR || $nTipoMensaje == E_USER_ERROR || $nTipoMensaje == E_PARSE ) $bMensajesError = true;
		// Si tiene que registrar el error en el log
		if ( (MENSAJE_REGISTRA & $nTipoMensaje) == $nTipoMensaje )
		{
			$nFd = fopen( LOG_FILE , "a");
			fwrite($nFd, date("Y-m-d h:i") . ";" . '"' . $cMensaje .  '"' . "\n");
			fclose($nFd);
		}
		// Si tiene que mostrar el error
		if ( (MENSAJE_MUESTRA & $nTipoMensaje) == $nTipoMensaje )
		{
			$aMensajes[] = array( $cMensaje, $nTipoMensaje, $cArchivo, $nLinea );
		}
	}
	function isError() 
	{
		global $bMensajesError;
		return $bMensajesError;
	}
	function isMessage() 
	{
		global $aMensajes;
		return (count($aMensajes)>0);
	}
	function showMessage() 
	{
		global $aMensajes;
		$cReturn = "";
		// Por cada Menaje en la Matriz aMensajes
		foreach( $aMensajes as $aMensaje ) 
		{
			// Setea el Estilo y el Icono de acuerdo al Tipo de Mensaje
			switch ( $aMensaje[1] ) 
			{
				case E_ERROR:
				case E_PARSE:
				case E_USER_ERROR:
					$cClass = "mensaje_error";
					break;
				case E_WARNING:
				case E_USER_WARNING :
					$cClass = "mensaje_advertencia";
					break;
				case E_NOTICE:
				case E_USER_NOTICE :
					$cClass = "mensaje_aviso";
					break;
			}
			$cReturn .= "<div class='$cClass'>" . $aMensaje[0];
			if ( $aMensaje[2] ) 
			{
				$cReturn .= ' en ' . $aMensaje[2] . ':' . $aMensaje[3] ;
			}
			$cReturn .= "</div><br/>";			
		}
		return $cReturn;
	}

	function cleanMessage()
	{
		global $aMensajes, $bMensajesError;
		$nqMensajes = count($aMensajes);
		for($nContador = 0; $nContador < $nqMensajes; $nContador++){
			array_pop($aMensajes);
		}
		$bMensajesError = false;
		$_SESSION['cError'] = '';
	}
?>
